﻿// Ants POJ - 1852  0章节热身.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

/*
https://vjudge.csgrandeur.cn/problem/POJ-1852
一群蚂蚁在一根长 l 厘米的水平杆上行走，每只蚂蚁的速度恒定为 1 厘米/秒。
当一只蚂蚁走到杆子的一端时，它就会立即从杆子上掉下来。当两只蚂蚁相遇时，它们会掉头向相反的方向开始行走。
我们知道蚂蚁在杆子上的原始位置，但不幸的是，我们不知道蚂蚁行走的方向。
你的任务是计算所有蚂蚁从杆子上掉下来所需的最早和最晚时间。
输入
第一行输入包含一个整数，表示后面的情况数量。每种情况的数据都以两个整数开始：电线杆的长度（厘米）和 n，即电线杆上的蚂蚁数量。
这两个数字之后是 n 个整数，表示每只蚂蚁在电线杆上的位置，即从电线杆左端量起的距离，不分先后。
所有输入的整数都不能大于 1000000，并用空白分隔。

输出
对于每种输入情况，输出两个以空格分隔的数字。
第一个数字是所有蚂蚁从杆上掉下来的最早时间（如果它们的行走方向选择得当），第二个数字是可能的最晚时间。

2
10 3
2 6 7
214 7
11 12 7 13 176 23 191

4 8
38 207
*/

int t, l, n;
const int N = 1000010;
int arr[N];

int main()
{
	scanf("%d",&t);
	
	while (t--) {
		int a = -1; int b = -1;
		scanf("%d %d",&l,&n);
		for (int i = 0; i < n; i++) {
			cin >> arr[i];
			a = max(a, min(l - arr[i], arr[i]));
			b = max(b, max(l - arr[i], arr[i]));
		}
		cout << a << " " << b << endl;
	}


	return 0;
}

 